#ifndef _EXPRESSION_H_
#define _EXPRESSION_H_
#include "ast/modType.h"
#include "ast/exprType.h"
class IVisitor;
class Expression;
typedef QSharedPointer<Expression> ExpressionPtr;

class Expression: public modType
{
public:
    explicit Expression(const exprTypePtr& body, int nodeId=-1);
    virtual ~Expression();
    
    
    exprTypePtr body();
    void setBody(const exprTypePtr& body);
    
    
    virtual QString type() const;
    virtual QString toString() const;
    virtual void accept(IVisitor* visitor, const SimpleNodePtr& node);
    virtual void traverse(IVisitor* visitor);
private:
    exprTypePtr _body;
};




#endif